#!/bin/bash
# 功能：在 Debian 系统中安装 zsh 并配置为默认 shell（完全国内镜像版）
# 适用：Debian 10+ 系统，国内网络环境

set -e

# 检查 root 权限
if [ "$(id -u)" -ne 0 ]; then
    echo "错误：请使用 root 权限运行（sudo ./install_zsh.sh）"
    exit 1
fi

# 1. 安装 zsh 和必要工具
echo "=== 安装 zsh 及依赖 ==="
apt update -qq
apt install -y zsh curl git  # 确保git已安装，用于克隆仓库

# 2. 确定当前用户
CURRENT_USER=$(logname 2>/dev/null || echo $SUDO_USER)
if [ -z "$CURRENT_USER" ]; then
    CURRENT_USER=$(whoami)
    echo "警告：未检测到普通用户，将为当前用户（$CURRENT_USER）设置 zsh"
fi
USER_HOME="/home/$CURRENT_USER"

# 3. 设置 zsh 为默认 shell
echo "=== 将 zsh 设置为 $CURRENT_USER 的默认 shell ==="
chsh -s $(which zsh) $CURRENT_USER

# 4. 安装 oh-my-zsh（完全使用国内 Gitee 镜像，不接触 GitHub）
echo "=== 安装 oh-my-zsh（国内 Gitee 镜像） ==="
OH_MY_ZSH_DIR="$USER_HOME/.oh-my-zsh"
if [ ! -d "$OH_MY_ZSH_DIR" ]; then
    # 国内镜像地址（Gitee）
    OH_MY_ZSH_REPO="https://gitee.com/mirrors/oh-my-zsh.git"
    
    # 手动克隆仓库（替代官方安装脚本，避免任何GitHub链接）
    su - $CURRENT_USER -c "git clone --depth=1 $OH_MY_ZSH_REPO $OH_MY_ZSH_DIR"
    
    # 复制默认配置文件
    if [ ! -f "$USER_HOME/.zshrc" ]; then
        su - $CURRENT_USER -c "cp $OH_MY_ZSH_DIR/templates/zshrc.zsh-template $USER_HOME/.zshrc"
        # 设置ZSH环境变量
        su - $CURRENT_USER -c "echo 'export ZSH=$OH_MY_ZSH_DIR' >> $USER_HOME/.zshrc"
    fi
else
    echo "oh-my-zsh 已安装，跳过"
fi

# 5. 配置 zsh 环境（使用国内插件源）
echo "=== 配置 zsh 环境 ==="
ZSHRC_FILE="$USER_HOME/.zshrc"
if [ -f "$ZSHRC_FILE" ]; then
    # 启用常用插件
    sed -i 's/^plugins=.*/plugins=(git sudo extract history-substring-search)/' "$ZSHRC_FILE"
    
    # 设置主题
    sed -i 's/^ZSH_THEME=.*/ZSH_THEME="robbyrussell"/' "$ZSHRC_FILE"
    
    # 添加国内加速配置
    echo '
# 国内镜像加速配置
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"
export npm_config_registry="https://registry.npm.taobao.org"
export pip_config_global_index-url="https://pypi.tuna.tsinghua.edu.cn/simple"

# 自定义别名
alias ll="ls -lh"
alias la="ls -lha"
alias update="sudo apt update && sudo apt upgrade -y"
alias zshconfig="vim ~/.zshrc"
alias sz="source ~/.zshrc"
' >> "$ZSHRC_FILE"
else
    echo "警告：未找到 .zshrc 文件，跳过配置"
fi

# 6. 修复权限
chown -R $CURRENT_USER:$CURRENT_USER "$OH_MY_ZSH_DIR" 2>/dev/null || true
chown $CURRENT_USER:$CURRENT_USER "$ZSHRC_FILE" 2>/dev/null || true

echo "=== 安装完成 ==="
echo "请重新登录或执行以下命令启用 zsh："
echo "exec zsh"
echo "提示：配置文件位于 ~/.zshrc，可使用 alias zshconfig 快速编辑"
